HarmonyOS-鸿蒙app开发 —基于java设置标识符_NetworkID

HarmonyOS-鸿蒙app开发 —基于java设置标识符_NetworkID

简介

定义

网络设备节点通信标识符,是分布式软总线提供的一种非永久性标识符。NetworkID基于Java原生的UUID接口随机生成,长度为32字节,使用十六进制表示。主要用于业务调用分布式能力时,标识分布式网络内的设备节点。

NetworkID举例:6B97BC8F6F85A2A1A6E0E262111F42D6A8541CBFF6CAF688FA5293956EC3FD43

NetworkID特点

  • NetworkID为设备级标识符,不同APP在同一时间获取到同一设备的NetworkID相同。
  • NetworkID在设备下线、设备重启、恢复出厂设置后会发生变化,因此不可用于数据持久化存储的索引等场景。

NetworkID重置

为满足在分布式场景中的隐私要求,NetworkID在以下几个场景会发生变化:

  • 用户操作进行设备恢复出厂设置。
  • 设备重启。
  • 分布式组网的设备上线列表从非空转为空,并持续为空5分钟后。

使用场景

NetworkID是分布式网络设备节点在分布式组网中的通信标识符,用于在分布式业务中标识网络设备节点。上层业务在调用分布式能力的时候,使用NetworkID标识不同的网络设备节点。由于同一设备的NetworkID的值在多次组网中可能会发生变化,因此NetworkID不能用于数据持久化存储的索引等场景。

开发准备

HarmonyOS SDK提供NetworkID相关API,应用程序可通过API使用NetworkID的能力。

获取NetworkID

public class MainAbility extends Ability {

// 建议开发者自行设计界面,示例代码仅供参考

private static final int OFFSET_X = 100;

private static final int OFFSET_Y = 100;

private static final int ADD_OFFSET_Y = 150;

private static final int BUTTON_WIDTH = 800;

private static final int BUTTON_HEIGHT = 100;

private static final int TEXT_SIZE = 50;

private int offsetY = 0;

 

// 应用包名

private String BUNDLE_NAME = “com.example.continuationdemo”;

// 注册控制中心服务后返回的Ability token

private int abilityToken;

// 用户在设备列表中选择设备后返回的NetworkID

private String selectNetworkId;

// 获取控制中心服务管理类

private IContinuationRegisterManager continuationRegisterManager;

 

// 设置控制中心设备状态变更的回调

private IContinuationDeviceCallback callback = new IContinuationDeviceCallback() {

@Override

public void onDeviceConnectDone(String networkId,String deviceType) {

// 在用户选择设备后回调获取NetworkID

selectNetworkId = networkId;

}

 

@Override

public void onDeviceDisconnectDone(String networkId) {

}

};

 

// 设置注册控制中心服务回调

private RequestCallback requestCallback = new RequestCallback() {

@Override

public void onResult(int result) {

abilityToken = result;

}

};

// 弹出选择设备列表

private ClickedListener mShowDeviceListListener = new ClickedListener() {

@Override

public void onClick(Component arg0) {

// 显示选择设备列表

continuationRegisterManager.showDeviceList(abilityToken, null, null);

}

};

 

@Override

public void onStart(Intent intent) {

super.onStart(intent);

continuationRegisterManager = getContinuationRegisterManager();

 

// 开发者可以自行进行界面设计

// 为按钮设置统一的背景色

// 例如通过PositionLayout可以实现简单界面

PositionLayout layout = new PositionLayout(this);

LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);

layout.setLayoutConfig(config);

ShapeElement buttonBg = new ShapeElement();

buttonBg.setRgbColor(new RgbColor(0, 125, 255));

Button btnShowDeviceList = createButton(“ShowDeviceList”, buttonBg);

btnShowDeviceList.setClickedListener(mShowDeviceListListener);

linear.addComponent(btnShowDeviceList);

super.setUIContent(layout);

 

// 注册控制中心

continuationRegisterManager.register(BUNDLE_NAME, null, callback, requestCallback);

}

 

private Button createButton(String text, ShapeElement buttonBg) {

Button button = new Button(this);

button.setContentPosition(OFFSET_X, OFFSET_Y + offsetY);

offsetY += ADD_OFFSET_Y;

button.setWidth(BUTTON_WIDTH);

button.setHeight(BUTTON_HEIGHT);

button.setTextSize(TEXT_SIZE);

button.setTextColor(Color.YELLOW);

button.setText(text);

button.setBackground(buttonBg);

return button;

}

 

@Override

public void onStop() {

super.onStop();

// 解注册控制中心

continuationRegisterManager.unregister(abilityToken, null);

}

}

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x